{{!-- Example of a custom CreatePlan prompt for the Handlebars Planner. 
    Be sure to use the ChatHistory syntax so the completion request is formatted correctly before it's sent to the model. --}}
{{#message role="system"}}
Explain how to achieve the user's goal using the available helpers with a Handlebars .Net template.
{{~/message}}

{{#message role="user"}}
{{!-- Custom helpers section. Strictly for demonstration purposes. This will only render what's shown below.
    It will not render any of the kernel functions or built-in system helpers, 
    thus overriding the helpers section is not recommended. --}}
You have a plugin named `MovieDatabase`.
These are the object types that are used in the plugin:

### Movie:
{
  "type": "Object",
  "properties": {
    "name": {
        "type": "string",
    },
    "genre": {
        "type": "string",
    },
    "year": {
        "type": "integer",
    },
    "rating": {
        "type": "number",
    },
  }
}

### MovieDetails:
{
  "type": "Object",
  "properties": {
    "name": {
        "type": "string",
    },
    "genre": {
        "type": "string",
    },
    "year": {
        "type": "integer",
    },
    "rating": {
        "type": "number",
    },
    "description": {
        "type": "string",
    },
    "reviews": {
        "type": "array",
        "items": {
            "type": "string",
        }
    },
    "actors": {
        "type": "array",
        "items": {
            "type": "string",
        }
    },
    "director": {
        "type": "string",
    },
  }
}

These are the custom helpers that are available in the `MovieDatabase` plugin:

### `MovieDatabase{{../nameDelimiter}}SearchMovies`
Description: Search for movies in the database.
Inputs:
  - Name: string - The name of the movie to search for, can be a partial name. (optional)
  - Genre: string - Genre of movie to search for. (optional)
Output: List<Movie> - List of movies matching the search criteria.

### `MovieDatabase{{../nameDelimiter}}GetMovieSummary`
Description: Get of a movie.
Inputs:
  - Name: string - The name of the movie to get. (required)
Output: Movie - Summary details of the movie.

### `MovieDatabase{{../nameDelimiter}}GetFullMovieDetails`
Description: Get full details of a movie.
Inputs:
  - Movie: Movie - The movie to pull details for. (required)
Output: MovieDetails - Full details of the movie.

### `MovieDatabase{{../nameDelimiter}}AddMovie`
Description: Add a movie to the database.
Inputs:
  - Movie: MovieDetails - The movie to add to the database. (required)
Output: Void

### `MovieDatabase{{../nameDelimiter}}AddReview`
Description: Add a review to a movie.
Inputs:
  - Movie: Movie - The movie to add the rating to. (required)
  - Rating: number - The rating to add to the movie. (required)
  - Review: string - The review to add to the movie. (optional)
Output: Void

{{!-- All partials defined in Planners.Handlebars.CreatePlanPromptPartials nanespace are registered 
    with every Handlebars Planner instance and can be selected for use in custom prompts. --}}
You also have the following built-in helpers available for use:
{{> BlockHelpers }}

{{> VariableHelpers }}
{{/message}}

{{!-- You can inject the user goal manually using {{goal}} or use the UserGoal partial to leverage SK's templating and prompt engineering. --}}
{{> UserGoal }}

{{> TipsAndInstructions }}